package com.hljx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.hljx.dto.RolePageDTO;
import com.hljx.dto.SysRoleDTO;
import com.hljx.dto.SysRoleMenuDTO;
import com.hljx.entity.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hljx.vo.RoleVO;
import com.hljx.vo.SysMenuVO;

import java.util.List;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author gx
 * @since 2023-09-25
 */
public interface SysRoleService extends IService<SysRole> {

    /**
     * 查询所有角色
     * @return
     */
    List<RoleVO> getRoles();

    /**
     *新建或更新
     * @param sysRoleDTO 角色实体
     * @return true or false
     */
    Boolean saveOrUpdateNew(SysRoleDTO sysRoleDTO);

    /**
     * 查询角色列表
     * @param rolePageDTO
     * @return
     */
    IPage<RoleVO> selectRoleList(RolePageDTO rolePageDTO);

    /**
     * 通过id删除
     * @param id
     * @return true or false
     */
    Boolean removeSysRole(Long id);

    /**
     * 修改角色启用状态
     * @param id
     * @param status
     * @return
     */
    Boolean updateRoleStatus(Long id,Integer status);

    /**
     * 为角色赋予权限
     *
     * @param dto 权限
     * @return true or false
     */
    Boolean addAuthMenu(SysRoleMenuDTO dto);

    /**
     * 查询选中的菜单ids
     * @param roleId
     * @return
     */
    List<Long> selectMenuId(Long roleId);

    /**
     * 通过角色ID查找角色菜单
     * @param roleId
     * @return
     */
    List<SysMenuVO> selectSysMenuVO(Long roleId);

}
